home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Franz PD
/
Franz PD Disk #260 (1993)(Rhein-Sieg-Soft).zip
/
Franz PD Disk #260 (1993)(Rhein-Sieg-Soft).adf
/
CASSLI
/
CassLi
(
.txt
)
< prev
next >
Wrap
AmigaBASIC Source Code
|
1993-08-06
|
18KB
|
686 lines
REM *** Tonträgerverwaltung von ***
REM ******** HP Biehl 1992 ********
REM *** Version 1.2 (21.08.93) ****
anfang:
DIM cahin(151),cahil(151),sdn(151),scadur(151),sip(151)
DIM ino(151),il(151),sidn(151),sicadur(151),sil(151)
PALETTE 0,0.1,0.1,0.1
PALETTE 1,0.55,0.35,0.98
PALETTE 2,0.8,0.1,0.1
OPEN"R",#1,"cass",9
FIELD #1,3 AS i$,4 AS l$,2 AS n$
OPEN"R",#2,"interp",18
FIELD #2,18 AS inte$
OPEN"R",#3,"cassetli",28
FIELD #3,28 AS ca$
OPEN"I",#4,"CassAnz"
INPUT #4,CasMax:INPUT #4,IntMax
CLOSE 4
Menue:
COLOR 1,0:CLS:PRINT
PRINT " 1 = Interpretenliste erweitern/ändern/anzeigen"
PRINT " 2 = Cassettenliste erweitern/ändern/anzeigen"
COLOR 2,0
PRINT " 3 = Interpret + Benotung je Song"
COLOR 1,0
PRINT " 4 = Maximale Interpreten- bzw. Cassettenzahl vergrößern"
COLOR 3,0
PRINT " 5 = Cassetten-Hitliste"
PRINT " 6 = Interpreten-Hitliste"
COLOR 1,0
PRINT " 7 = Interpretenliste nach Anfangsbuchstaben"
COLOR 3,0
PRINT " 8 = Interpreten suchen"
COLOR 1,0
PRINT " 9 = Ende"
COLOR 2,0
Menuauswahl:
LOCATE 12,1:INPUT " Auswahl (? = Infos): ",ausw$
IF ausw$="?" THEN Hauptinfos
ausw=VAL(ausw$)
IF ausw<1 OR ausw>9 THEN Menue
cano=0
ON ausw GOSUB interli,casseli,ausdatei,datein,casshi,ihi,inalpha,ISu,ende
GOTO Menue
Hauptinfos:
WINDOW 2," HILFEMENÜ",,2
COLOR 3,0
PRINT " Es werden immer nur Cassetten erwähnt. Mit LPs oder CDs läuft die ganze"
PRINT " Geschichte natürlich auch. Um alle Funktionen kennenzulernen ist es anfangs"
PRINT " ratsam, immer wenn eine Eingabe verlangt wird, ? einzugeben!"
PRINT:COLOR 2,0
PRINT " 1 = Interpretenliste erweitern/ändern/anzeigen"
COLOR 1,0:PRINT " Zur stapelweisen Erfassung bzw. Änderung auf den Tonträgern vorkommender"
PRINT " Interpreten inkl. Anzeige. Einzelerfassung auch direkt im Menüpunkt 3 möglich!"
COLOR 2,0
PRINT " 2 = Cassettenliste erweitern/ändern/anzeigen"
COLOR 1,0:PRINT " Zur stapelweisen Erfassung bzw. Änderung von Tonträgern inkl. Anzeige."
PRINT " Einzelerfassung auch direkt im Menüpunkt 3 möglich!"
COLOR 2,0
PRINT " 3 = Interpret + Benotung je Song"
COLOR 1,0:PRINT " Zu den einzelnen Songs eines bestimmten Tonträgers den Interpreten, die Note"
PRINT " und die Länge in Sekunden eingeben. Je Tonträger maximal 35 Songs! Noten"
PRINT " können von 1-99 vergeben werden, wobei kleinere Zahlen bessere Noten bedeuten."
PRINT " (10 ist z. B. besser als 20)
COLOR 2,0
PRINT " 4 = Maximale Interpreten- bzw. Cassettenzahl vergrößern"
COLOR 1,0:PRINT " Diese sind aus Rechenzeitersparnis begrenzt und können hier bei Bedarf"
PRINT " jederzeit erhöht werden."
COLOR 2,0
PRINT " 5 = Cassetten-Hitliste"
COLOR 1,0:PRINT " Die Rangfolge aller Tonträger nach Deiner unter Menüpunkt 3 gegebenen"
PRINT " Benotung wird hier ermittelt und aufgelistet."
COLOR 3,0:PRINT " Weiter mit beliebiger Taste"
WHILE INKEY$="":WEND
PRINT :COLOR 2,0
PRINT " 6 = Interpreten-Hitliste"
COLOR 1,0:PRINT " Die Rangfolge aller Interpreten nach Deiner unter Menüpunkt 3 gegebenen"
PRINT " Benotung wird hier ermittelt und aufgelistet (benötigt etwas Rechenzeit)."
COLOR 2,0
PRINT " 7 = Interpretenliste nach Anfangsbuchstaben"
COLOR 1,0:PRINT " Nach wahlweisen Anfangsbuchstaben sortierte Ausgabe der Interpreten. Dazu ist"
PRINT " es wichtig, daß im Menüpunkt 1 bzw. 3 die Namen der Interpreten mit einem"
PRINT " Großbuchstaben beginnend erfaßt wurden und ggfls. mit dem Nachnamen zuerst."
COLOR 2,0
PRINT " 8 = Interpreten suchen"
COLOR 1,0:PRINT " Auflistung aller Tonträger, auf dem sich ein Interpret nach Wahl befindet."
COLOR 2,0
PRINT " 9 = Ende"
COLOR 1,0:PRINT " Verlassen des Programms"
COLOR 2,0:PRINT
PRINT " Viel Vergnügen wünscht Hans-Peter Biehl"
PRINT " Dorfstr. 175"
PRINT " 6612 Schmelz-Limbach"
PRINT :COLOR 3,0:PRINT " Weiter mit beliebiger Taste"
WHILE INKEY$="":WEND
WINDOW CLOSE 2:GOTO Menue
anza:
PRINT
COLOR 1,0:INPUT " Von Cassetten-Nr.",x$
IF x$="?" THEN
COLOR 2,0
PRINT " Gib die kleinste für die Ermittlung zu berücksichtigende Cass.-Nr. ein!"
COLOR 1,0
END IF
x=VAL(x$)
IF x<1 THEN anza
IF x>CasMax THEN
GOSUB Caszugross
GOTO anza
END IF
bisanza:
COLOR 1,0:INPUT " bis Cassetten-Nr.",xx$
IF xx$="?" THEN
COLOR 2,0
PRINT " Gib die größte für die Ermittlung zu berücksichtigende Cass.-Nr. ein!"
COLOR 1,0:GOTO bisanza
END IF
xx=VAL(xx$)
IF xx<x THEN bisanza
IF xx>CasMax THEN
GOSUB Caszugross
GOTO bisanza
END IF
PRINT :RETURN
Caszugross:
COLOR 2,0
PRINT " Darf ich Dich erinnern, daß die maximale Cassettenanzahl";CasMax;"beträgt?"
RETURN
datein:
CLS:PRINT:COLOR 2,0
PRINT " Maximale Anzahl Cassetten: ";CasMax
PRINT " Maximale Anzahl Interpreten: ";IntMax
PRINT : COLOR 1,0
PRINT " 1 = Erläuterungen (bitte zuerst anwählen)"
PRINT " 2 = Maximale Cassettenanzahl vergrößern"
PRINT " 3 = Maximale Interpretenanzahl vergrößern"
PRINT " 4 = Hauptmenü"
PRINT : COLOR 3,0
Auswahl:
INPUT " Auswahl ",ausw$
IF ausw$="?" THEN PRINT " Für Infos 1 eingeben!":GOTO Auswahl
ausw=VAL(ausw$)
IF ausw<1 OR ausw>4 THEN datein
ON ausw GOSUB infos,ceinri,ieinri
IF ausw=4 THEN RETURN
GOTO datein
ausdatei:
CLS:COLOR 2,0:INPUT " Cassetten-Nr. ",cas$
cano=0
IF cas$="?" THEN
WINDOW 2," Eingabemöglichkeiten",,2
PRINT :PRINT " ....... (Nr. der zu benotenden Cassette)"
PRINT " bzw. (Cassettenliste erweitern/ändern/anzeigen)"
PRINT " (zurück ins Hauptmenü)"
PRINT " (diese Anzeige)"
COLOR 2,0
LOCATE 2,2:PRINT "1":LOCATE 2,6:PRINT CasMax
LOCATE 3,2:PRINT "C":LOCATE 3,9:PRINT "c"
LOCATE 4,2:PRINT "<RETURN>"
LOCATE 5,5:PRINT "?"
COLOR 3,0
PRINT :PRINT " Das Drücken einer beliebigen Taste führt Dich nun wieder in die"
PRINT " Eingabemaske."
COLOR 1,0:LOCATE 2,6:PRINT "."
WHILE INKEY$="":WEND
WINDOW CLOSE 2
GOTO ausdatei
END IF
IF cas$="c" OR cas$="C" THEN cano=1:GOTO casseli
cas%=VAL(cas$)
IF cas%=0 OR cas%>CasMax THEN RETURN
GET #3,cas%:LOCATE 1,19:PRINT ": ";ca$
PRINT " ------------------":COLOR 3,0
PRINT " Song Interpret sec. Note Song Interpret sec. Note"
COLOR 1,0
FOR code=cas%*35-34 TO cas%*35
GET #1,code
IF CVI(i$)>0 THEN
lo2=1:lo1=code-cas%*35+38
IF code-cas%*35+19>0 THEN lo1=code-cas%*35+22:lo2=37
GET #2,CVI(i$)
LOCATE lo1,lo2:PRINT USING " ##) \ \ #### ##";code-cas%*35+35;inte$;CVI(l$);CVI(n$)
END IF
NEXT code
SongNot:
LOCATE 20,1:COLOR 3,0:INPUT " Song-Nr.: ",tit$
IF tit$="?" THEN
LOCATE 20,1
INPUT " Gib die Song-Nr. (1-35) ein oder RETURN für zurück: ",tit$
END IF
tit%=VAL(tit$)
IF tit%>35 THEN
LOCATE 20,12:PRINT " "
GOTO SongNot
END IF
IF tit%=0 THEN RETURN
IntNot:
LOCATE 21,1
INPUT " Interpreter-Nr.: ",in$
IF in$="?" THEN
WINDOW 2," Eingabemöglichkeiten",,2
PRINT :PRINT " ....... (Nr. des Interpreten)"
PRINT " bzw. (Interpretenliste erweitern/ändern/anzeigen)"
PRINT " (zurück ins Hauptmenü)"
PRINT " (diese Anzeige)"
COLOR 2,0
LOCATE 2,2:PRINT "1":LOCATE 2,6:PRINT IntMax
LOCATE 3,2:PRINT "I":LOCATE 3,9:PRINT "i"
LOCATE 4,2:PRINT "<RETURN>"
LOCATE 5,5:PRINT "?"
COLOR 3,0
PRINT :PRINT " Das Drücken einer beliebigen Taste führt Dich nun wieder in die"
PRINT " Eingabemaske."
COLOR 1,0:LOCATE 2,6:PRINT "."
WHILE INKEY$="":WEND
WINDOW CLOSE 2
GOTO IntNot
END IF
IF in$="I" OR in$="i" THEN
cano=2:GOTO interli
END IF
in%=VAL(in$)
IF in%>IntMax THEN IntNot
LSET i$=MKI$(in%)
SecNot:
seku=0
LOCATE 22,1:INPUT " Sekunden (t=Stoppuhr): ",la$
IF la$="?" THEN
WINDOW 2," Sekundeneingabe",,2
CLS:PRINT
PRINT " Gib die Anzahl der Sekunden dieses Songs ein oder"
PRINT " gib t ein, um die Stoppuhrfunktion aufzurufen. Die Stoppuhr"
PRINT " wird jeweils mit der Leertaste gestartet und gestoppt."
PRINT " Die Sekunden laufen auf dem Bildschirm mit."
PRINT " Doch zunächst drücke eine beliebige Taste, um zur Eingabemaske"
PRINT " zurückzukehren!"
WHILE INKEY$="":WEND
WINDOW CLOSE 2
GOTO SecNot
END IF
IF la$="t" OR la$="T" THEN
la$="1"
LOCATE 22,2:PRINT "LEERTASTE startet die Stoppuhr!"
WHILE INKEY$<>" ":WEND
seku1=TIMER
LOCATE 22,2:PRINT "Sekunden: (Stopp durch LEERTASTE)"
WHILE INKEY$<>" "
seku=TIMER-seku1
LOCATE 22,11:PRINT USING "####";seku
WEND
LOCATE 22,17:PRINT " "
END IF
IF VAL(la$)>0 THEN la%=VAL(la$) :ELSE SecNot
IF seku>0 THEN la%=seku
LSET l$=MKI$(la%)
NotNot:
LOCATE 23,1:INPUT " Note: ",no$
IF no$="?" THEN
LOCATE 23,1:INPUT " Gib eine Note (1-99) ein. Je kleiner, desto besser:",no$
END IF
no%=VAL(no$)
IF no%<1 OR no%>99 THEN NotNot
LSET n$=MKI$(no%)
indatei:
code=cas%*35-35+tit%
PUT #1,code
GOTO ausdatei
infos:
COLOR 2,0:PRINT
PRINT " Es ist ratsam, die maximale Anzahl Cassetten und Interpreten"
PRINT " immer nur stufenweise etwas zu erhöhen, um zu verhindern, daß"
PRINT " die einzelnen Programmpunkte unnötig lange Rechenzeiten in"
PRINT " Anspruch nehmen. Beachte, daß verkleinern nicht mehr geht,"
PRINT " immer nur vergrößern!"
COLOR 3,0:PRINT
PRINT " Weiter mit beliebiger Taste!"
WHILE INKEY$="":WEND
RETURN
ieinri:
PRINT
INPUT " Wie hoch soll die max. Interpretenanzahl sein";IntMax1$
IF IntMax1$="?" THEN
PRINT " Gib eine Zahl größer als";IntMax;" ein."
GOTO ieinri
END IF
IntMax1=VAL(IntMax1$)
IF IntMax1<=IntMax THEN
PRINT " Das geht nicht!"
FOR w=1 TO 3000:NEXT w
RETURN
END IF
INPUT " Ganz wirklich (ja=j)";w$
IF w$<>"j" THEN
PRINT " Also nicht!"
FOR w=1 TO 3000:NEXT w
RETURN
END IF
IntMaxAlt=IntMax:IntMax=IntMax1
OPEN"O",#4,"CassAnz"
PRINT #4,CasMax:PRINT #4,IntMax
CLOSE 4
LSET inte$=""
FOR i=IntMaxAlt+1 TO IntMax
PUT #2,i
NEXT:RETURN
ceinri:
PRINT
INPUT " Wie hoch soll die max. Cassettenanzahl sein";CasMax1$
IF CasMax1$="?" THEN
PRINT " Gib eine Zahl größer als";CasMax;" ein."
GOTO ceinri
END IF
CasMax1=VAL(CasMax1$)
IF CasMax1<=CasMax THEN
PRINT " Das geht nicht!"
FOR w=1 TO 3000:NEXT w
RETURN
END IF
INPUT " Ganz wirklich (ja=j)";w$
IF w$<>"j" THEN
PRINT " Also nicht!"
FOR w=1 TO 3000:NEXT w
RETURN
END IF
CasMaxAlt=CasMax:CasMax=CasMax1
OPEN"O",#4,"CassAnz"
PRINT #4,CasMax:PRINT #4,IntMax
CLOSE 4
LSET ca$=""
FOR i=CasMaxAlt+1 TO CasMax
PUT #3,i
NEXT i
LSET i$=CHR$(255)
FOR i=35*CasMaxAlt+1 TO 35*CasMax
PUT #1,i
NEXT
RETURN
interli:
WINDOW 2," Nr. Interpret Nr. Interpret",,2
interlis:
canza=0:acanz=0:COLOR 2,0
FOR i=1 TO IntMax
GET #2,i
IF inte$<>" " THEN
canza=canza+1:iloc1=canza:iloc2=1
IF canza>40 THEN iloc1=canza-40
IF canza>80 THEN iloc1=canza-80
IF canza>120 THEN iloc1=canza-120
IF canza>20 AND canza<41 THEN iloc1=canza-20:iloc2=31
IF canza>60 AND canza<81 THEN iloc1=canza-60:iloc2=31
IF canza>100 AND canza<121 THEN iloc1=canza-100:iloc2=31
LOCATE iloc1,iloc2
PRINT USING " ### \ \";i;inte$
END IF
IF canza=40 OR canza=80 OR canza=120 THEN
acanz=canza
PRINT : COLOR 1,0
INPUT " Weiter -> RETURN",w$
CLS:COLOR 2,0
END IF
NEXT i
PRINT :COLOR 3,0
IntEin:
LOCATE 21,1:PRINT " "
LOCATE 22,1:PRINT " "
LOCATE 21,1:INPUT " Interpreten-Nr.:",in$
IF in$="?" THEN
COLOR 1,0:LOCATE 21,1
PRINT " Gib die Nr. des neuen bzw. des zu ändernden Interpreten ein"
PRINT " oder einfach nur RETURN, um die Anzeige zu beenden!"
FOR wart=1 TO 7000:NEXT wart
COLOR 3,0
GOTO IntEin
END IF
in=VAL(in$)
IF in=0 THEN
WINDOW CLOSE 2
IF cano=2 THEN IntNot
IF cano=3 THEN ISu
RETURN
END IF
IF in>IntMax THEN
COLOR 1,0:PRINT " Darf ich Dich daran erinnern, daß die maximale Interpreten-Nr.";IntMax;"beträgt?"
COLOR 3,0
GOTO IntEin
END IF
LOCATE 22,1:LINE INPUT " Interpret: ",ip$
LSET inte$=ip$
PUT #2,in
IF cano=2 THEN
WINDOW CLOSE 2:GOTO IntNot
END IF
IF cano=3 THEN WINDOW CLOSE 2:GOTO ISu
GOTO interlis
inalpha:
WINDOW 2,"Interpretenliste nach Anfangsbuchstaben",,2
inalf:
CLS:COLOR 1,0:PRINT
PRINT " Von Buchstabe ";
bu1:
alf1$=INKEY$:IF alf1$="" THEN bu1
COLOR 3,0:PRINT alf1$
IF alf1$="?" THEN
PRINT " Groß- oder Kleinbuchstabe, ist egal."
PRINT " Weiter mit beliebiger Taste!"
WHILE INKEY$="":WEND
GOTO inalf
END IF
COLOR 1,0:PRINT " bis Buchstabe ";
bu2:
alf2$=INKEY$:IF alf2$="" THEN bu2
COLOR 3,0:PRINT alf2$
PRINT:alf1$=UCASE$(alf1$):alf2$=UCASE$(alf2$)
alf1=ASC(alf1$):alf2=ASC(alf2$)
IF alf1<65 OR alf1>90 OR alf2<65 OR alf2>90 THEN
GOTO inalf
END IF
IF alf1>alf2 THEN alf=alf2:alf2=alf1:alf1=alf
COLOR 2,0
FOR alf=alf1 TO alf2
FOR i=1 TO IntMax
GET #2,i
IF CHR$(alf)=LEFT$(inte$,1) THEN
PRINT USING "### \ \";i;inte$
END IF
NEXT i
NEXT alf
COLOR 1,0
PRINT :PRINT " Weiter mit beliebiger Taste"
WHILE INKEY$="":WEND
WINDOW CLOSE 2:RETURN
ISu:
CLS:cano=0:INPUT " Interpreten-Nr.: ",in$
IF in$="I" OR in$="i" THEN cano=3:GOTO interli
IF in$="?" THEN
WINDOW 2," Eingabemöglichkeiten",,2
PRINT :PRINT " ....... (Nr. des zu suchenden Interpreten)"
PRINT " bzw. (Interpretenliste erweitern/ändern/anzeigen)"
PRINT " (zurück ins Hauptmenü)"
PRINT " (diese Anzeige)"
COLOR 2,0
LOCATE 2,2:PRINT "1":LOCATE 2,6:PRINT IntMax
LOCATE 3,2:PRINT "I":LOCATE 3,9:PRINT "i"
LOCATE 4,2:PRINT "<RETURN>"
LOCATE 5,5:PRINT "?"
COLOR 3,0
PRINT :PRINT " Das Drücken einer beliebigen Taste führt Dich nun wieder in die"
PRINT " Eingabemaske."
COLOR 1,0:LOCATE 2,6:PRINT "."
WHILE INKEY$="":WEND
WINDOW CLOSE 2
GOTO ISu
END IF
in=VAL(in$)
IF in=0 OR in>IntMax THEN RETURN
GET #2,in
COLOR 3,0:PRINT
LOCATE 1,23:PRINT inte$
COLOR 1,0:LOCATE 2,23
PRINT "befindet sich auf:"
PRINT :COLOR 2,0
cadur=0
cadurch:
cadur=cadur+1
cassdu=0
casdur:
cassdu=cassdu+1
cdg=(cadur-1)*35+cassdu
GET #1,cdg
hil=CVI(i$)
IF hil=in THEN
GET #3,cadur
PRINT USING "### \ \";cadur;ca$
END IF
IF hil=in THEN cadurch
IF cassdu<35 AND cadur<=CasMax THEN casdur
IF cadur<CasMax THEN cadurch
COLOR 1,0:PRINT :INPUT " Weiter -> RETURN",w$
RETURN
casseli:
WINDOW 2," Nr. Cassettentitel",,2
casselis:
canza=0:acanz=0:COLOR 2,0
FOR i=1 TO CasMax
GET #3,i
IF ca$<>" " THEN
canza=canza+1
PRINT USING " ### \ \";i;ca$
END IF
IF acanz<>canza AND (canza=20 OR canza=40 OR canza=60 OR canza=80 OR canza=100 OR canza=120 OR canza=140) THEN
acanz=canza
PRINT : COLOR 1,0
INPUT " Weiter -> RETURN",w$
CLS:COLOR 2,0
END IF
NEXT i
PRINT :COLOR 3,0
CasEin:
INPUT " Cassetten-Nr.: ",inc$
IF inc$="?" THEN
COLOR 1,0
PRINT " Nur RETURN = Anzeige beenden"
PRINT " Vorhandene Cass.-Nr. = Name ändern"
PRINT " Noch nicht vorhandene Cass.-Nr. = neu anlegen"
COLOR 3,0
GOTO CasEin
END IF
inc=VAL(inc$)
IF inc=0 THEN
WINDOW CLOSE 2
IF cano=1 THEN ausdatei
RETURN
END IF
IF inc>CasMax THEN
COLOR 1,0:PRINT " Zu große Nr. !!!"
COLOR 3,0:GOTO CasEin
END IF
CasTitEin:
LINE INPUT " Titel: ",casse$
IF casse$="?" THEN
PRINT " Maximal 28 Zeichen werden berücksichtigt!"
GOTO CasTitEin
END IF
LSET ca$=casse$
PUT #3,inc
IF cano=1 THEN
WINDOW CLOSE 2: GOTO ausdatei
END IF
GOTO casselis
casshi:
GOSUB anza
COLOR 2,0:canza=0
FOR cadur=x TO xx
cahil(cadur)=0:cahin(cadur)=0:sdn(cadur)=0
FOR cadu=1 TO 35
cad=(cadur-1)*35+cadu
GET #1,cad
cil=CVI(i$)
IF cil>0 THEN
cahil(cadur)=cahil(cadur)+CVI(l$)
cahin(cadur)=cahin(cadur)+CVI(l$)*CVI(n$)
END IF
NEXT cadu
IF cahil(cadur)>0 THEN
GET #3,cadur
canza=canza+1
sdn(canza)=cahin(cadur)/cahil(cadur)
scadur(canza)=cadur
END IF
IF canza>1 THEN
FOR sorti=canza TO 1 STEP -1
srti=sorti-1
IF sdn(sorti)<sdn(srti) THEN
sdn=sdn(srti)
sdn(srti)=sdn(sorti)
sdn(sorti)=sdn
scadur=scadur(srti)
scadur(srti)=scadur(sorti)
scadur(sorti)=scadur
END IF
NEXT sorti
END IF
NEXT cadur
WINDOW 2,"Rang Cassettentitel sec. Note",,2
COLOR 2,0
FOR sorti=1 TO canza
cadur=scadur(sorti)
GET #3,cadur
PRINT USING "###. ### \ \ #### ##.#";sorti;cadur;ca$;cahil(cadur);sdn(sorti)
IF sorti=20 OR sorti=40 OR sorti=60 OR sorti=80 THEN
COLOR 2,0:PRINT :INPUT " Weiter -> RETURN",w$
CLS
END IF
NEXT sorti
COLOR 1,0:PRINT :INPUT " Weiter -> RETURN",w
WINDOW CLOSE 2
RETURN
ihi:
COLOR 1,0:PRINT
PRINT " Nach Qualität (1), Quantität (2) oder Punkten (3) sortiert? (Nach Punkten"
INPUT " werden sowohl Qualität als auch Quantität berücksichtigt) Eingabe: ",w$
IF w$="?" THEN
COLOR 3,0:PRINT " Gib 1, 2 oder 3 ein oder nur ENTER für zurück!"
ihi1=1:GOTO ihi
END IF
w=VAL(w$)
IF w<>1 AND w<>2 AND w<>3 THEN Menue
IF ihi1=0 THEN LOCATE 16,1 :ELSE PRINT
COLOR 2,0
PRINT " Du kannst Dir in der Zeit ein Bier holen gehen! "
COLOR 3,0
badnote=0
FOR cadur=1 TO CasMax
il(cadur)=0:ino(cadur)=0
NEXT cadur
FOR cadu=1 TO 35*CasMax
GET #1,cadu
hil=CVI(i$)
IF cadu=17.5*CasMax THEN
IF ihi1=0 THEN LOCATE 16,1 :ELSE PRINT
PRINT " Siehst Du, die halbe Wartezeit ist schon vorbei! "
END IF
ihi1=0
IF hil>0 THEN
il(hil)=il(hil)+CVI(l$)
ino(hil)=ino(hil)+CVI(l$)*CVI(n$)
IF CVI(n$)>badnote THEN badnote=CVI(n$)
END IF
NEXT cadu
COLOR 2,0
WINDOW 2," Rang Interpret sec. Note Punkte",,2
PRINT : COLOR 3,0
PRINT " Jetzt sortiere ich noch!"
ianza=0
FOR cadur=1 TO IntMax
GET #2,cadur
IF il(cadur)>0 THEN
ianza=ianza+1
sidn(ianza)=ino(cadur)/il(cadur)
sil(ianza)=il(cadur)
sicadur(ianza)=cadur
sip(ianza)=sil(ianza)*(badnote-sidn(ianza))/10
END IF
IF ianza>1 AND w=1 THEN
FOR sorti=ianza TO 1 STEP -1
srti=sorti-1
IF sidn(sorti)<sidn(srti) THEN
sidn=sidn(srti):sil=sil(srti):sip=sip(srti)
sidn(srti)=sidn(sorti):sil(srti)=sil(sorti):sip(srti)=sip(sorti)
sidn(sorti)=sidn:sil(sorti)=sil:sip(sorti)=sip
sicadur=sicadur(srti)
sicadur(srti)=sicadur(sorti)
sicadur(sorti)=sicadur
END IF
NEXT sorti
END IF
IF ianza>1 AND w=2 THEN
FOR sorti=ianza TO 1 STEP -1
srti=sorti-1
IF sil(sorti)<sil(srti) THEN
sidn=sidn(srti):sil=sil(srti):sip=sip(srti)
sidn(srti)=sidn(sorti):sil(srti)=sil(sorti):sip(srti)=sip(sorti)
sidn(sorti)=sidn:sil(sorti)=sil:sip(sorti)=sip
sicadur=sicadur(srti)
sicadur(srti)=sicadur(sorti)
sicadur(sorti)=sicadur
END IF
NEXT sorti
END IF
IF ianza>1 AND w=3 THEN
FOR sorti=ianza TO 1 STEP -1
srti=sorti-1
IF sip(sorti)<sip(srti) THEN
sidn=sidn(srti):sip=sip(srti):sil=sil(srti)
sidn(srti)=sidn(sorti):sip(srti)=sip(sorti):sil(srti)=sil(sorti)
sidn(sorti)=sidn:sip(sorti)=sip:sil(sorti)=sil
sicadur=sicadur(srti)
sicadur(srti)=sicadur(sorti)
sicadur(sorti)=sicadur
END IF
NEXT sorti
END IF
NEXT cadur
COLOR 2,0:CLS
IF w>1 THEN
ianza1=ianza:ianza2=1:ianza3=-1
ELSE
ianza1=1:ianza2=ianza:ianza3=1
END IF
FOR sorti=ianza1 TO ianza2 STEP ianza3
cadur=sicadur(sorti)
IF w>1 THEN sortie=ianza+1-sorti :ELSE sortie=sorti
GET #2,cadur
PRINT USING " ###. \ \ ##### ##.# ######";sortie;inte$;sil(sorti);sidn(sorti);sip(sorti)
IF sortie=20 OR sortie=40 OR sortie=60 OR sortie=80 OR sortie=100 THEN
COLOR 3,0:PRINT :INPUT " Weiter -> RETURN",w$
CLS:COLOR 2,0
END IF
NEXT sorti
COLOR 1,0:PRINT :INPUT " Weiter -> RETURN",w$
WINDOW CLOSE 2
RETURN
ende:
SYSTEM